1. Technical Field
The present invention relates generally to graphics system register data generation and, more particularly, to register data generation using recorded command lists of register data.
2. Related Art
Digital electronics and, in particular, digital video systems are becoming ubiquitous in today's electronic world. One industry, among many, in which digital video systems are becoming much more prevalent is television services. For instance, practically every television system now offers digital service, which requires a set top box having a digital video system. In this setting, the digital video system provides various functions relative to the digital television services such as television programming information, games, Internet browsing and other multimedia in a graphical format on a television display. Each digital video system generally includes a processor, memory, a hardware graphics system for generating graphics, an application that provides system functionality including graphics creation, and an application program interface (API) for communicating between the application and graphics system. In operation, the digital video system application provides a request for generation of a graphic to the graphics system API, and the graphics system API would then generate register data for the graphics system using the digital video system processor.
An overriding problem with digital video systems is that the graphics system's hardware is very complex and unique for each manufacturer. This creates a couple of issues. One issue relative to implementation is that each time a graphic is requested by an application, the API must have the register data calculated by the processor. When a graphic is used repeatedly, the processing is repeated, which creates very inefficient usage of system processor capacity. This is especially disadvantageous where the digital video system application provides a variety of functions and each function must use the processor. For instance, a processor in an electronic gaming device may calculate graphics, and also a myriad of other gaming calculations. In this regard, any device that can reduce processor utilization is advantageous.
Another issue relates to programming of the application and the application's ability to interact with the API and graphics system. Since graphic systems are very complex, application programmers must design applications that include in-depth knowledge of the complex graphics system hardware. As a simplified example, a graphics system may require the following registers be filled in order to build a graphic: hardware dependent defaults, logic checking (e.g., raster operation), error checking, bit address calculation (e.g., a function that takes x, y, stride, format and calculates an address), shift to proper location, monochrome (e.g., for setting up register for special raster operation), and where to load values into registers. As a result, the application programmer must have a very in-depth knowledge of the required register data for the graphics system and must impart that knowledge into the application, or use predefined APIs that may be very generic and inefficient for a particular use.
In order to personally achieve this knowledge, application programmers spend an immense amount of time either learning register structure of a graphics systems and/or communicating with hardware manufacturers on how to calculate the correct register data. This problem is magnified for programmers where different graphics systems are used. The process of programming a robust application, therefore, can become very time consuming and tedious.
One partial remedy to the above issues has been to provide graphic templates or primitives that can be recalled and modified. However, current digital video systems require such a large number of graphics to be generated on the fly that even a large library of graphics templates is inadequate. Maintaining an updated graphics template library is also burdensome and inefficient.
In view of the foregoing, there is a need in the art for a graphics system API and related application that can generate graphics system register data, record register data and recall register data on the fly to increase digital video system efficiency and simplify application programming.